阅读更多

2顶
0踩

编程语言
千呼万唤始出来,在经历了整整一年的跳票之后,Java 9 终于在 9 月 21 日拨开云雾,露出真正的面目。对众多 Java 程序员来说,这一天无疑是一个重大的日子,首先 Java 开发者们再也不用羡慕别的自带 REPL 的语言了,不用为了试个 Java 功能而开个 Groovy shell;其次最主要的莫过于 Jigsaw 项目下颠覆性的 Java 模块化了,有了它,自己定制/裁剪 JDK 变得更直接。

其中,整个 Java 的核心内容非 JDK 莫属,其包括了 Java 运行环境(Java Runtime Envirnment)、Java 工具和 Java 基础的类库。而无论什么样的 Java 应用服务器实质都是内置了某个版本的 JDK,因此掌握 JDK 是学好 Java 的第一步。

JDK 9 主要特性

对于最新发布的 Java 9,JDK 9 有哪些主要的特性呢?

1、Jigsaw 项目:颠覆性的模块化 JDK

Jigsaw 项目是为了模块化 Java 代码,并将 JRE 分成相互协作的组件。这个 JEP 是迈向 Jigsaw 四步中的第一步,它只是模块化 JDK 源代码,不会改变 JRE 和 JDK 的真实结构,从而使得编译系统能够模块编译并在构建时检查模块边界。

这个项目原计划随 Java 8 发布,但因为推迟,所以被放到了 Java 9 中。Jigsaw 项目一旦完成,将允许开发者根据项目的需要自定义组件,从而减少 rt.jar 的大小;还可以做到使 Java 能够更加容易的应用到小型计算设备(如网络设备)中,同时也能够使得开发者更加容易地构建和维护这些类库。

2、简化了的进程 API

目前,Java 控制与管理系统进程的能力是有限的,为了获得操作系统的一些信息需要调用本地程序或者其他变通方案。然而,在 Java 9 中将会新增一些新的、直接明了的方法来处理进程 ID、名字和状态以及枚举多个 JVM 和进程等,从而扩展 Java 与操作系统的交互能力。

3、 轻量级的 JSON API

尽管目前有多种处理 JSON 的 Java 工具(如 Google 的 Gson、阿里巴巴的 FastJson、IBM 的 Json4J 等),但 JSON API 是 Java 语言的一部分,轻量并且运用了 Java 8 的新特性。JSON API将放在 java.util 包里一起发布,这样,开发者就可以直接使用 JDK 而无需再引入第三方 JSON 工具包了。

4、 钱和货币的相关 API

Java 9 引入了新的货币 API, 用来表示货币, 并支持币种之间的转换和各种复杂运算。

5、 改善锁争用机制

锁争用限制了许多 Java 多线程应用性能,新的锁争用机制改善了 Java 对象监视器的性能,并得到了多种基准测试的验证(如 Volano),这类测试可以估算 JVM 的极限吞吐量。实际中, 新的锁争用机制在 22 种不同的基准测试中都得到了出色的成绩。如果新的机制能在 Java 9 中得到应用的话, 应用程序的性能将会大大提升。

6、代码分段缓存

Java 9 的另一个性能提升来自于JIT(Just-in-time)编译器。当某段代码被大量重复执行的时候, 虚拟机会把这段代码编译成机器码(native code)并储存在代码缓存里面, 继而通过访问缓存中不同分段的代码来提升编译器的效率。代码分段缓存机制将会提升许多方面的性能,如当 JVM 进行垃圾回收扫描的时候,就可以直接跳过永驻代码,从而提升效率。

7、智能 Java 编译工具

智能 Java 编译工具(sjavac)的第一阶段始于 JEP139 这个项目, 用于在多核处理器情况下提升 JDK 的编译速度。如今,这个项目已经进入第二阶段即 JEP199, 其目的是改进 Java 编译工具,并取代目前 JDK 编译工具 javac,继而成为 Java 环境默认的通用的智能编译工具。

JDK 9 下载地址:http://download.csdn.net/download/yixiaof/9994456

将应用程序迁移到 JDK 9:Yes or No?

了解完 JDK 9 的所有特性,很多开发者都在讨论是否要将项目迁移到 JDK 9。

接下来,本文根据以“你迁移到 JDK 9 的计划是什么?”为主题开展了一项民意调查,旨在给众多开发者了解将应用程序移植到 JDK 9 过程中所处的阶段。

引用
调查一共有两次,分别面向 EMEA(欧洲、中东、非洲三地区的合称) 和美洲的开发者。

对于“是有有意愿将项目迁移到 JDK 9 ?”主题的调查包含了以下的选择:
  • 已在生产环境中使用 JDK 9
  • 正在迁移到 JDK 9
  • 正在观望中
  • 等待下一个长期支持版的发布
  • 还在使用 JDK 6
具体的调查数据如下:

来自 EMEA (欧洲、中东、非洲三地区的合称)开发者的调查结果:

来自美洲开发者的调查结果:

综合结果:

使用 JDK 9 的用户为零

根据以上的调查结果,可以看到,“正在观望中”的开发者占了大多数,而使用旧版本的朋友仍有不少,但意外的是,使用 JDK 9 的用户居然一个都没有。虽然这次调查的样本量可能不够大,但我们相信这确实是比较贴近现实的。

为何期盼已久的 JDK 惨遭嫌弃?

JDK 9 为何如此惨淡?下面我们将探索 JDK 9 很少在生产环境中被采用的根本原因:
  • 应用程序从 JDK 8 或更早版本迁移至 JDK 9 出现的不兼容变更情况的数量。尽管已经从标准 API 中移除的六种方法不会影响很多人,但是像停止 JVM 启动的命令行选项的数量将是一个障碍。
  • 内部 JDK API 封装的影响。同样,直接受此影响的开发者数量也不会很大,但间接受到影响的开发者数量则很多。因为大多数开发者在开发应用程序时使用了第三方库和框架,有很多这样的库和框架使用封装的 API。虽然大部分已经过测试并提供专门针对 JDK 9 的版本,但仍然有很多还没这样做。对于没有得到积极维护的库或框架来说,这无疑是一个会阻碍迁移至 JDK 9 的问题。
  • 受支持的寿命周期。甲骨文最近宣布将加快 JDK 的发布频率,改为每六个月发布一次。按照改进的发布计划,JDK 9 不是长期支持版本。在这个新方案下,JDK 9 将是以 JDK 8 为基础的第一个“功能”版本。而且由于公共的更新,开发者在决定要部署的 Java 版本时,需要记住一些东西。长期支持版本的更新将至少提供三年,而 JDK 8 的受支持周期更像是四年半。这些版本适用于喜欢稳定的企业,使其能够在单个版本上运行大型的应用程序。
对此,有不少网友也表示:

Glavo:

个人感觉挺失望的。

Java 9 库上的改动很小,API 上的变动更小,而语法新特性貌似一样都没有,所以对我来说,Java 9 没有太大的吸引力。

模块化是这个版本的 Java 里最大的改动,不过我感觉造成的破坏性还是有点大。之前非正式版的 openjdk9 上我连 gradle 都跑不起来。就算用上了正式版,我还是看到一群人在群里抱怨某某应用跑不起来,各个库和框架的移植也要等上好久。

新的工具 jaotc 和 jshell 我也试了一下。jaotc 目前还算不上真正可用。而且就算真正可用了,个人感觉在短时间内还是难以比过一些目前已经存在的一些 aot 编译器。

jshell 也算是 Java 的一个进步,不过功能还是挺弱的,用起来浓浓的 jline 风,编辑功能基本上也都是 jline 自己提供的,而且貌似也没有彩色显示?比起 Kotlin 没有补全的命令行的 repl 算是强一点,但是和 Scala repl 比起来都还是有一定差距的。

下面,只希望 Java 10 能做的更好吧!

许怀远:

JDK 9 语法几乎没有增强,核心库也只有少量改进,JVM 提升也不大,但它却是个转折点。

大刀阔斧砍掉 32 位版本,想用 32 位的,要么用 JDK 6/7/8,要么出门左转 OpenJDK。

砍掉了 VisualVM 和 jhat 等 JVM 诊断工具,下一个版本会不会砍掉 JFR?
Java 8 的项目,很大可能默认启动不了,甚至不加参数编译不了,模块化带来的阵痛。

每半年发布一个新版本,比之前三年一个版本快的多,长期支持版本尚未发布。将 Java EE 和 Java SE Embedded 甩给了社区,Oracle 要减少投入?

综合以上几点,Java 6 是 Win XP,Java 8 是 Win 7,Java 9 算是砍掉 32 位的 Win 8,注定是个临时过度版本,想迁移到 9 的团队,多半会等下一个长期支持版。

总结

大多数开发者表示,他们将继续在生产环境中使用 JDK 8,至少直到下一个 LTS 版发布。而根据甲骨文展示的计划,在 LTS 版本之间进行转换对开发者来说颇具挑战性。

那么,你对 JDK 9 怎么看呢?现在已经在生产环境中使用了吗,还是继续观望中?
  • 大小: 13.8 KB
  • 大小: 24.8 KB
  • 大小: 24.8 KB
  • 大小: 25.2 KB
2
0
评论 共 1 条 请登录后发表评论
1 楼 wndlmu 2017-12-26 10:37
11111111111111111111

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Java17,有史以来最快 JDK!但Java8 YYDS!

    Java各个版本的生命周期 据Oralce官博透露,虽然6个月版本的使用人数在增长,但大部分组织及企业更倾向于把LTS版本用在生产环境中,从而得到更加稳定可靠的服务。这一点从Snyk发布的2021 Java 社区报告中也可以得到...

  • 频频霸榜的Python,竟遭开发者嫌弃!

    在刚刚过去的 2018 年里,要说最热门的科技领域是哪一个?毋庸置疑的是,人工智能必排在前列;而要论编程语言界,最流行的编程语言是谁?那非 Python 莫属。2018 ...

  • Java17,有史以来最快 JDK!

    Java各个版本的生命周期 据Oralce官博透露,虽然6个月版本的使用人数在增长,但大部分组织及企业更倾向于把LTS版本用在生产环境中,从而得到更加稳定可靠的服务。这一点从Snyk发布的2021 Java社区报告中也可以得到...

  • TIOBE 3 月编程语言排行榜:主流 Java、C++ 惨遭嫌弃,Python 势头迅猛

    取代不了的 Java、挡不住势头的 Python、吐槽不尽的 C++…数百种编程语言中也仅有那么几种当属主流语言,而如今这些主流的编程语言局势如何?身处其中的开发者又需要了解哪些内容? 本文无意挑起编程语言争端,而是...

  • Python跻身Top 3,主流Java、C++惨遭嫌弃 | TIOBE 3月编程语言排行榜

    取代不了的 Java、挡不住势头的 Python、吐槽不尽的 C++......数百种编程语言中也仅有那么几种当属主流语言,而如今这些主流的编程语言局势如何?身处其中的开...

  • 听说你还在用Date类表示时间?

    之前我们《日期处理类Date类》这篇文章已经聊过了Date类,但是Date类却遭“嫌弃”了,这是为啥呢?我们先来看几个例子。 范例1:创建一个表示“此刻”的日期,打印出来: package edu.blog.test07; import java....

  • 什么?你还在花一两万学Java,快来看看小白学习java全路线吧

    看着心疼,我走过去安慰阿伟,却又不知道说什么,只能安静的坐在他旁边。阿伟长的高大帅气,从高中开始追他的女孩就像蝴蝶一样没有断过,大学时遇到了小美,文学院的系花,两个人在社团招新报名的时候认识的,在报名...

  • 4月程序员工资统计出炉:平均14596元,南京程序员收入挤进一线。

    来源 |有数可据2021年4月全国招收程序员456577人。2021年4月全国程序员平均工资14596元,工资中位数12500元,其中96%的人的工资介于2500元到65000元。城市使...

  • Facebook 全球宕机 6 小时!到底遇到了什么问题??

    ‍往期热门文章:1、宕机三个月、36亿打水漂,印度骄傲Infosys如何活成了全球笑话? 2、Java17,有史以来最快 JDK!但Java8 YYDS! 3、Spring Boot巧用 ...

  • 什么是低代码(Low-Code)?

    阿里妹导读:什么是低代码?我们为什么需要低代码?低代码会让程序员失业吗?本文总结了低代码领域的基本概念、核心价值与行业现状,带你全面了解低代码。一 前言如果选择用一个关键词来代表即将过...

  • 微软全力拥抱 Java !

    来源:CSDN(ID:CSDNnews)虽然一直以来,微软的不少产品在很多层面都有使用 Java 语言,但近日其官网上的一则「Microsoft is committed to the success of Java developers」(微软致力于 Java 开发者的成功)的...

  • MySQL 数据库中 52 条 SQL 语句性能优化方法,干货必收藏!

    >>号外:关注“Java精选”公众号,回复“2021面试题”关键词,领取全套500多份Java面试题文件。1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及...

  • 为什么不推荐使用BeanUtils属性转换工具,老程序员都不使用!

    点击上方蓝色字体,选择“标星公众号” 优质文章,第一时间送达关注公众号后台回复pay或mall获取实战项目资料+视频 作者:明明如月学长blog.csdn.net/w605283073/...

  • 武汉最最最牛逼的IT公司全在这了

    作为Lombok的信徒,我这次翻车了,啪啪打脸~当MyBatis 3.5.X遇上JDK8竟然出现了性能问题,全项目组都得加班~代码总是被嫌弃写的太烂?装上这个IDEA插件再试试! 还在写大量 if 来判断?试试用一个规则执行器来替代它...

  • 薪资16K,在阿里外包工作是一种什么体验...

    记得那时候税前薪资大概是7k左右,因为是在工厂,工作环境很差,也很危险,所以我一直有想转行的想法。 正好有当时的同事提前离职,学习Python,他学习结束后在上海拿到一个12k的offer,更加坚定了我转行培训的想法...

  • 面试官问我:平常如何对你的 Java 程序进行调优?

    在分布式环境中,分布式跟踪系统等基础设施也对应用性能诊断提供了有力支持。 7 性能优化实践 在介绍了一些常用的性能诊断工具后,下面将结合我们在 Java 应用调优中的一些实践,从 JVM 层、应用代码层以及数据库层...

  • c++蓝桥杯刷题代码.zip

    蓝桥杯 c++刷题代码

  • Windows11_InsiderPreview_EnterpriseVL_x64_zh-cn_26080.iso.009

    Windows11_InsiderPreview_EnterpriseVL_x64_zh-cn_26080.iso.009

  • 2024年6月彩虹易支付最新版源码

    2024/05/01: 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 2024/03/31: 1.商户支付统计支持日期范围查询 2.修复进件商户聚合收款码支付问题 2024/03/21: 1.修复进件商户相关支付问题 2.代付支持查询转账凭证 2024/03/01: 1.支持微信转账到银行卡接口 2.优化手机扫码跳转逻辑 3.支付宝电脑网站支付兼容手机 2024/01/18: 1.优化用户中心收入统计显示 2.后台登录增加失败次数限制 2024/01/06: 1.更新微信商家小票页面样式 2.云闪付扫码支付支持直接跳转云闪付APP 3.增加杉德、付呗支付插件 2023/12/19: 1.更新PayPal、汇付、虎皮椒插件 2023/12/07: 1.新增使用邀请码注册功能 2.修复随机增减金额出现多位小数的问题 2023/11/08: 1.新增邀请返现功能,后台可设置返现比例 2.支持单独给用户组开启代付、邀请返现功能 3.可设置代付手续费与日最大代付笔数限制 4.手动提现可设置日

Global site tag (gtag.js) - Google Analytics